// pages/custom/custom.js
import { getApproveInfo,approveProcess,revokeApprove } from "@/api/approve.js"

const app = getApp();

Page({
  /**
   * 页面的初始数据
   */
  data: {
    isAdmin: false,
    username: '',
    loading: true,
    active: 0, //0我的审批，1我的申请
    isActive: true, //true待审批、false已处理
    value:'',
    isDisabled:true,//发起人是否禁用
    columns:["资产借用申请","耗材借用申请","资产保修申请","资产归还申请",],//
    // 搜索条件
    searchParams : {
      processType: '', //审批类型
      type:1, //1待处理、2已处理 3我发起的
      userId:4, //当前登录的用户id，测试数据
      status:0, //审批状态
      startUserName: '',//发起人    
      pageNum:1, //当前页
      pageSize:10, //页面大小
      totalPage:0, //总页数
      total:0 //总记录数
    },
    processTypes: [
      { text: '申请类型', value: "" },
      { text: '资产借用', value: '资产借用申请' },
      { text: '耗材领用', value: '耗材领用申请' },
      { text: '资产报修', value: '资产报修申请' },
      { text: '资产归还', value: '资产归还申请' },
    ],
    processStatuses: [
      { text: '审批状态', value: 0 },
      { text: '审批中', value: 1 },
      { text: '已通过', value: 2 },
      { text: '已撤回', value: 3 },
      { text: '已驳回', value: -1 },
    ],
    list: [], //列表数据
    processData:{ 
      processId:"", //审批id   
      result:"1",    //审核结果：1通过 0不通过
      description:"" //审核描述
    },
    showRevoke:false,  //控制撤回对话框
    showApprove:false,//控制审批对话框

    hasMore: true,      // 是否还有更多数据
    loading: false,     // 是否正在加载
    error: false,       // 是否加载失败
  },

  //调用后端接口，获取数据
  loadData(){
    if(this.data.searchParams.status==0){
      this.data.searchParams.status=''
    }
    //this.data.searchParams.type = 3
    //调用接口
    getApproveInfo(this.data.searchParams).then(res=>{      
      //计算总页数
      if(res.data!=null &&res.data.list!==null){        
        this.data.searchParams.totalPage = Math.ceil(res.data.total/this.data.searchParams.pageSize)
      }
      this.setData({
        list:res.data==null?null:res.data.list
      })
    })
  },
   //我的审批
   onChange(event) {
    console.log(event.detail)
    if(event.detail.index==0){ //我的审批
      if(this.data.isActive){
        this.data.searchParams.type=1 //待处理
      }else{
        this.data.searchParams.type=2 //已处理
      }       
       this.setData({
        isDisabled:false,
        active:0  
       })
    }
    if(event.detail.index==1){ //我的申请
      this.data.searchParams.type=3
      this.setData({
        isDisabled:true,
        active:1  
       })
    }
    //默认第一页
    this.data.searchParams.pageNum=1
    //加载数据
    this.loadData()
  },
  //单击待审批
  myProess(event){
    //console.log(event)
    this.setData({
      isActive:!this.data.isActive
    })
    if(this.data.isActive){
      this.data.searchParams.type=1 //待处理
    }else{
      this.data.searchParams.type=2 //已处理
    }
    //默认第一页
    this.data.searchParams.pageNum=1
    //加载数据
    this.loadData()
  },
  //申请类型
  onSwitch1Change({ detail }) {
    //console.log(detail)
    this.data.searchParams.processType = detail
    //默认第一页
    this.data.searchParams.pageNum=1
    //加载数据
    this.loadData()
  },
  //审批状态
  onSwitch2Change({ detail }) {
    //console.log(detail)
    this.data.searchParams.status = detail
    //默认第一页
    this.data.searchParams.pageNum=1
    //加载数据
    this.loadData()
  },
   //根据申请人搜索
  onChangeByStartName(e) {
    //默认第一页
    this.data.searchParams.pageNum=1
    this.setData({
      value: e.detail,
    });
    this.data.searchParams.startUserName = this.data.value
    //加载数据
    this.loadData()
  },
  //根据申请人搜索
  onSearchByStartName(){
    //默认第一页
    this.data.searchParams.pageNum=1
    //加载数据
    this.loadData()
  },
  //页面跳转
  toDetail(e){
    //console.log("页面跳转",e)
    let params={startUserName:e.mark.approve.startUserName,
      processType:e.mark.approve.processType,
      code:e.mark.approve.code,
      status:e.mark.approve.status,
      createTime:e.mark.approve.createTime,
      businessId:e.mark.approve.businessId
    }
    wx.navigateTo({
      url: `/pages/approveDetail/approveDetail?approve=${JSON.stringify(params)}`,       
    });
  },
  //打开审批对话框
  toApprove(e){
    console.log("进行审批:",e.mark.id)
    this.data.processData.processId = e.mark.id
    this.setData({
      showApprove:true,      
    })   
  },
  //审批操作
  doApprove() {
    console.log("666",this.data.processData);
    if(this.data.processData.result=="通过"){
      this.data.processData.result="1"
    }
    
    //调用后端接口
    approveProcess(this.data.processData).then((res)=>{
      if(res.code==200){
        wx.showToast({
          title: '审批成功',
          icon: 'success'
        })
        //加载数据
       this.loadData()
       //
       this.data.processData = { 
          processId:"", //审批id   
          result:"1",    //审核结果：1通过 0不通过
          description:"" //审核描述
        }
        this.setData({
          processData:this.data.processData
        })
      }else{
        wx.showToast({
          title: res.message,
          icon: 'none'
        })
      }      
    })
    
  },
  //获取审核状态
  onClick(e){
    //console.log("111",e)
    if(e.detail=="通过"){
      this.data.processData.result = 1
    }else{
      this.data.processData.result = 0
    }    
  },
  //获取审核时的描述内容
  onOpinionInput(e){
    //console.log(222,e)
    this.data.processData.description = e.detail
  },
   //关闭审批对话框
  onCloseByApprove() {
    console.log("关闭审批对话框");
    this.setData({ showApprove: false, });
    this.data.processData = { 
      processId:"", //审批id   
      result:"通过",    //审核结果：1通过 0不通过
      description:"" //审核描述
    }
  },


   //打开撤回对话框
  toRevoke(e){
    console.log("撤销审批",e.mark.id)
    this.data.processData.processId = e.mark.id
    this.setData({
      showRevoke:true,      
    })    
  },
  //撤回操作
  doRevoke() {
    console.log("666",this.data.processData.processId);
    //Notify({ type: 'success', message: '撤回成功' });
    revokeApprove(this.data.processData.processId).then((res)=>{
      if(res.code==200){
        wx.showToast({
          title: '撤回成功',
          icon: 'success'
        })
        //加载数据
       this.loadData()
      }else{
        wx.showToast({
          title: res.message,
          icon: 'none'
        })
      }      
    })
        
  },
   //关闭撤回对话框
  onCloseByRevoke() {
    console.log("关闭撤回对话框");
    this.setData({ showRevoke: false });
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    //console.log('custom page loaded');
    //this.initPage();
    this.loadData()
  },
  //下拉刷新
  onPullDownRefresh () {
    //默认第一页
    this.data.searchParams.pageNum=1
    // 从服务器获取新数据
    this.loadData();
    setTimeout(() => {
      // 数据获取成功后，停止下拉刷新动画
      wx.stopPullDownRefresh();
    }, 100);
  },
  // 触底事件处理函数
  onReachBottom() {
    //显示加载中
    this.setData({
      loading:true,  
      hasMore:false, //有更多数据    
    })
    console.log(this.data.searchParams.pageNum,this.data.searchParams.totalPage,this.data.searchParams.pageNum>=this.data.searchParams.totalPage)
    if(this.data.searchParams.pageNum>=this.data.searchParams.totalPage){
      this.setData({
        loading:false,
        hasMore:false, //没有更多数据
      })
      this.data.searchParams.pageNum=this.data.searchParams.totalPage
    }else{
      //下拉时候，页面加一
      this.data.searchParams.pageNum = this.data.searchParams.pageNum+1
      setTimeout(() => {
        //调用接口
       getApproveInfo(this.data.searchParams).then(res=>{
         if(res.code==200){
           if(res.data.list!=null){
             this.setData({
               loading:false,
               hasMore:false,
               list:[... this.data.list,...res.data.list]
             })
           }        
         }      
       })  
       }, 500);   
    }
    console.log(this.loading , this.hasMore)
    if(!this.loading && !this.hasMore){
      wx.showToast({
        title: "没有更多数据啦",
        icon: 'none'
      })
    }
         
  },


  // 错误重试
  retry() {
    if (!this.data.error) return;
    this.loadData();
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    //console.log('custom page shown');
    //this.initPage();
    this.loadData()
  },

  // 初始化页面数据
  /*
  initPage() {
    try {
      this.setData({ loading: true });      
      const username = wx.getStorageSync('username') || '';      
      //console.log('current user role:', username);      
      this.setData({
        isAdmin: username === 'admin',
        username,
        loading: false
      });      
      // 同步更新tabBar
      app.onShow();
      
    } catch (error) {
      console.error('init page error:', error);
      this.setData({ loading: false });
      wx.showToast({
        title: '加载用户信息失败',
        icon: 'none'
      });
    }
  },*/

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    this.loadData()
    console.log('custom page unloaded');
  }
})